GdkScreen *screen;
GdkRectangle extents;
cairo_pattern_t *pattern;
+ GdkVisual *rgba_visual;
+ gboolean has_rgba;
g_return_if_fail (GDK_IS_DRAG_CONTEXT (context));
g_return_if_fail (surface != NULL);
screen = gdk_window_get_screen (gdk_drag_context_get_source_window (context));
+ rgba_visual = gdk_screen_get_rgba_visual (screen);
window = gtk_window_new (GTK_WINDOW_POPUP);
+ has_rgba =
+ rgba_visual != NULL &&
+ gdk_screen_is_composited (screen);
+ if (has_rgba)
+ gtk_widget_set_visual (GTK_WIDGET (window), rgba_visual);
+
gtk_window_set_type_hint (GTK_WINDOW (window), GDK_WINDOW_TYPE_HINT_DND);
gtk_window_set_screen (GTK_WINDOW (window), screen);
set_can_change_screen (window, TRUE);
gtk_widget_set_size_request (window, extents.width, extents.height);
gtk_widget_realize (window);
- if (cairo_surface_get_content (surface) != CAIRO_CONTENT_COLOR)
+ if (cairo_surface_get_content (surface) != CAIRO_CONTENT_COLOR &&
+ !has_rgba)
{
cairo_surface_t *saturated;
cairo_region_t *region;